#============================================================
#    Camera 2d Base
#============================================================
# - datetime: 2022-08-23 23:23:44
#============================================================
@tool
class_name Camera2DByTileMapBase
extends Parasitic


@export 
var _tilemap : NodePath : 
	set(value):
		_tilemap = value
		update_configuration_warnings()


#============================================================
#  内置
#============================================================
func _get_configuration_warning():
	if not get_parent() is Camera2D:
		return "父节点必须是 Camera2D 类型的节点！"
	if _tilemap == ^"":
		return "必须设置 _tilemap 属性！"
	if not get_node_or_null(_tilemap) is TileMap:
		return "必须设置 _tilemap 选中节点必须是 TileMap 类型！"
	return ""


func _ready():
	if Engine.is_editor_hint():
		return
	assert(_tilemap != ^"", "没有设置 _tilemap 属性")
	
	get_viewport().size_changed.connect(update_camera)
	await get_tree().process_frame
	update_camera()


#============================================================
#  自定义
#============================================================
## 更新摄像机
func update_camera():
	_update_camera()

# 更新摄像机
func _update_camera():
	pass


